Current Central Processing Unit (CPU) scheduling mechanisms distribute CPU time-slots across processes, wherein each process uses a collection of threads. Allocation of CPU time to a process in turn affects the CPU time each thread in the process uses. For example, some CPU scheduling mechanisms may allocate CPU time based on the needs of each process. Other CPU scheduling mechanisms may assign priority to processes, thus ensuring that each process receives CPU time in the order of its priority. Additional “reservation-based” mechanisms may reserve CPU time for each process regardless of actual usage by each process.
These CPU scheduling mechanism may fall short of providing fair CPU time distribution in a multi-user environment, as the number of processes serving each user may vary. For instance, a significant number of the total processes may serve a particular user, while only a small remainder of the total processes serves other users. As a result, the particular user may consume a disproportionate amount of CPU time in comparison to the other users during CPU cycles. Such uneven distribution of CPU time may dramatically and adversely affect the computing experience of some users in the multi-user environment.
Additionally, the “reservation-based” CPU scheduling mechanisms may not dynamically schedule CPU time per process. For example, once a CPU time reservation is made for a particular process, the reserved portion of the CPU is not available to other processes even if the particular process has no demand for the CPU.